打包和分发
本文档指导您如何打包和分发基于 NW.js 的应用程序。
快速入门
您可以使用以下工具自动打包您的基于 NW.js 的应用程序以进行分发。
或者,您可以使用以下说明手动构建您的应用程序。
准备您的应用
在打包之前,您应该准备好所有必要的文件。查看以下清单以确保您没有遗漏任何内容。
- 源代码和资源
- 使用
npm install
安装 NPM 模块 - 重新构建原生 Node 模块
- 构建 NaCl 二进制文件
- 编译源代码 并删除原始文件
- 在 清单文件 中使用的图标
警告
不要假设针对一个平台的 node_modules
在所有平台上都能直接使用。例如 node-email-templates
有针对 Windows 和 Mac OS X 的特定 npm install
命令。此外,它需要 Python 才能正确安装,而 Python 在 Windows 上默认没有安装。
作为经验法则,在您目标的每个平台上 npm install
您的 package.json
以确保一切按预期工作。
文件名和路径
在大多数 Linux 和一些 Mac OS X 上,文件系统是区分大小写的。这意味着 test.js
和 Test.js
是不同的文件。确保您的应用程序中使用的路径和文件名大小写正确。否则,您的应用程序在这些文件系统上可能会出现错误或崩溃。
Windows 上的路径长度
您的应用程序中使用的路径长度可能会超过 Windows 上的最大长度(260 个字符)。这会导致各种构建失败。这通常发生在使用旧版本 NPM(<3.0)通过 npm install
安装依赖项时。请在根目录中构建您的应用程序,例如 C:\build\
,以尽可能避免此问题。
准备 NW.js
您必须将 NW.js 与您的应用程序一起重新分发,才能使您的应用程序运行。NW.js 提供了多种 构建版本,以满足不同的需求和包大小。为您的产品选择合适的构建版本,或者 从源代码构建。
下载的包中的所有文件都应该与您的产品一起重新分发,除了 SDK 版本中的工具,包括 nwjc
、payload
和 chromedriver
。
打包您的应用
打包应用程序有两种选择:普通文件或 zip 文件。
打包选项 1. 纯文件(推荐)
在 Windows 和 Linux 上,您可以将应用程序的文件放在与 NW.js 二进制文件相同的文件夹中,然后将它们交付给您的用户。确保 nw
(或 nw.exe
)与 package.json
位于同一个文件夹中。或者,您可以将应用程序的文件放在名为 package.nw
的文件夹中,该文件夹与 nw
(或 nw.exe
)位于同一个文件夹中。
在 Mac 上,将应用程序的文件放入 nwjs.app/Contents/Resources/
中名为 app.nw
的文件夹中,就完成了。
这是打包应用程序的推荐方法。
打包选项 2. 压缩文件
您可以将所有文件打包到一个 zip 文件中,并将其重命名为 package.nw
。然后将其与 Windows 和 Linux 的 NW.js 二进制文件放在一起。对于 Mac,将其命名为 app.nw
并将其放在 nwjs.app/Contents/Resources/
中。
大型包或过多文件会导致启动缓慢
在启动时,NW.js 会将包解压缩到临时文件夹中,并从那里加载。因此,如果您的包很大或包含太多文件,启动速度会变慢。
在 Windows 和 Linux 上,您甚至可以通过将 zip 文件附加到 nw
或 nw.exe
的末尾来隐藏 zip 文件。
您可以在 Windows 上运行以下命令来实现此目的
copy /b nw.exe+package.nw app.exe
或在 Linux 上运行以下命令
cat nw package.nw > app && chmod +x app
平台特定步骤
Windows
可以使用 Resource Hacker、nw-builder 和 node-winresourcer 等工具替换 nw.exe
的图标。
您可以创建一个安装程序,将所有必要的文件部署到最终用户的系统上。您可以使用 Windows Installer、NSIS 或 Inno Setup。
Linux
在 Linux 上,您需要创建正确的 .desktop
文件。
要创建自解压安装程序脚本,可以使用 shar
或 makeself
等脚本。
要通过包管理系统(如 apt
、yum
、pacman
等)分发您的应用程序,请遵循其官方文档创建包。
Mac OS X
在 Mac OS X 上,您需要修改以下文件以拥有自己的图标和捆绑 ID
Contents/Resources/nw.icns
:应用程序的图标。nw.icns
采用 Apple Icon Image Format 格式。您可以使用 Image2Icon 等工具将 PNG/JPEG 格式的图标转换为 ICNS 格式。Contents/Info.plist
:Apple 包描述文件。您可以查看 Implementing Cocoa’s Standard About Panel,了解此文件将如何影响您的应用程序以及您应该修改哪些字段。
要重命名应用程序,应修改以下文件
* Contents/Info.plist
- CFBundleDisplayName
* Contents/Resources/en.lproj/InfoPlist.strings
- CFBundleDisplayName
* Contents/MacOS/nwjs
- 如果您更改了 CFBundleExecutable
,请将文件重命名为其值
* package.json
– 添加一个字符串字段 product_string
(例如 foobar);辅助应用程序将显示为“foobar Helper”。(从 v0.24.4 开始)
* Contents/Frameworks/nwjs Framework.framework/Versions/n.n.n.n/nwjs Helper.app/Contents/MacOS/nwjs Helper.app
- 将目录重命名为“foobar Helper.app”,以及另外三个辅助程序
* Contents/Frameworks/nwjs Framework.framework/Versions/n.n.n.n/nwjs Helper.app/Contents/MacOS/nwjs Helper.app/Contents/Info.plist
- 更改 CFBundleDisplayName,以及另外三个辅助程序
您应该对您的 Mac 应用程序进行签名,否则如果 Gatekeeper 处于开启状态,用户将无法启动该应用程序。有关详细信息,请参阅Mac App Store 支持。
参考资料
有关打包应用程序的更多工具,请参阅NW.js 的 wiki。